# 带着二哈去旅行丶:ZZQ
# 生成时间：2021/12/5 下午10:16


# 从文件中提取最低温度
print('16.1.8 绘制最高和最低温度曲线')
'''
import csv
import matplotlib.pyplot as plt
from datetime import datetime

filename = 'data/sitka_weather_2018_simple.csv'
with open(filename) as f:
    reader = csv.reader(f)
    header_row = next(reader)

    # 从文件中获取日期、最高温度和最低温度
    dates, highs, lows = [], [], []
    for row in reader:
        current_date = datetime.strptime(row[2], '%Y-%m-%d')
        high = int(row[5])
        low = int(row[6])
        dates.append(current_date)
        highs.append(high)
        lows.append(low)

# 根据最高温度和最低温度绘制图形
plt.style.use('Solarize_Light2')
fig, ax = plt.subplots()
ax.plot(dates, highs, c='red')
# ax.plot(dates, highs1, c='red', label='sitka_high', linestyle='--') # label搭配ax.legend()添加图例 linestyle线的格式
# ax.legend()
ax.plot(dates, lows, c='blue')
# 设置图形格式
ax.set_title('2018年每日的最高温度', fontsize=24)
ax.set_xlabel('', fontsize=16)                          # 设置x轴
fig.autofmt_xdate()                                     # 调用fig.autofmt_xdate()函数绘制倾斜的日期标签，避免重叠
ax.set_ylabel('温度（F）', fontsize=16)                 # 设置y轴
ax.tick_params(axis='both', which='major', labelsize=16)    # 设置刻度的样式 both影响x和y labelsize刻度标记字号
plt.show()
'''
print('16.1.9 给图表区域着色')

import csv
import matplotlib.pyplot as plt
from datetime import datetime
from plotly import offline
from plotly.graph_objs import Scatter, Layout

filename = 'data/sitka_weather_2018_simple.csv'
with open(filename) as f:
    reader = csv.reader(f)
    header_row = next(reader)

    # 从文件中获取日期、最高温度和最低温度
    dates, highs, lows = [], [], []
    for row in reader:
        current_date = datetime.strptime(row[2], '%Y-%m-%d')
        high = int(row[5])
        low = int(row[6])
        dates.append(current_date)
        highs.append(high)
        lows.append(low)

# 根据最高温度和最低温度绘制图形
plt.style.use('Solarize_Light2')
fig, ax = plt.subplots(figsize=(10, 6), dpi=128)  # 指定图表分辨率
ax.plot(dates, highs, c='red', alpha=0.5)  # alpha指定颜色的透明度 0-透明 1-完全不透明（默认值）
ax.plot(dates, lows, c='blue', alpha=0.5)
ax.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1)
# fill_between()传递一个x值系列,以及两个y值系列    实参facecolor指定填充区域的颜色
# 设置图形格式
ax.set_title('2018年每日的最高温度', fontsize=24)
ax.set_xlabel('', fontsize=16)  # 设置x轴
fig.autofmt_xdate()  # 调用fig.autofmt_xdate()函数绘制倾斜的日期标签，避免重叠
ax.set_ylabel('温度（F）', fontsize=16)  # 设置y轴
ax.tick_params(axis='both', which='major', labelsize=16)  # 设置刻度的样式 both影响x和y labelsize刻度标记字号
plt.show()

print('----------设置为本地html模式（两曲线同时输出失败）')
'''
# 设置为本地html模式
data1 = [Scatter(x=dates, y=highs, name='最高温度', mode='lines', line=dict(width=2, color='red'))]     # 轨迹1
# data2 = [Scatter(x=dates, y=lows, name='最低温度', mode='lines', line=dict(width=2, color='blue'))]      # 轨迹2
# data = [data1, data2]   # 数据集
my_layout = Layout(title='最高温度', xaxis=dict(title='日期'), yaxis=dict(title='温度'),
                   legend=dict(x=1, y=0.5, font=dict(size=5, color='black')))
offline.plot({'data': data1, 'layout': my_layout}, filename='sitka_highs_lows.html')
'''

